// PerformanceLogger.hh
// 性能日志系统，用于记录性能相关的日志到 pro.txt 文件
// 使用LogConfig统一管理配置

#ifndef UTILS_PERFORMANCE_LOGGER_HH
#define UTILS_PERFORMANCE_LOGGER_HH

#include <stdio.h>
#include <pthread.h>
#include <stdarg.h>
#include "LogConfig.hh"

// 性能日志器类（单例模式）
class PerformanceLogger {
public:
    // 获取单例实例
    static PerformanceLogger& getInstance();
    
    // 初始化日志系统（延迟初始化，首次调用时自动初始化）
    void init();
    
    // 记录日志（带时间戳）
    void log(const char* fmt, ...);
    
    // 记录关键错误日志（简化版本，减少日志频率）
    void logError(const char* fmt, ...);
    
    // 关闭日志系统（清理资源）
    void shutdown();
    
private:
    PerformanceLogger();
    ~PerformanceLogger();
    PerformanceLogger(const PerformanceLogger&) = delete;
    PerformanceLogger& operator=(const PerformanceLogger&) = delete;
    
    // 内部初始化函数
    void initInternal();
    
    FILE* fLogFile;
    pthread_mutex_t fMutex;
    bool fInitialized;
    int fLogCount;  // 日志计数器，用于批量刷新
};

// 便捷宏定义
#define PRO_LOG(fmt, ...) PerformanceLogger::getInstance().log(fmt, ##__VA_ARGS__)
#define PRO_LOG_ERROR(fmt, ...) PerformanceLogger::getInstance().logError(fmt, ##__VA_ARGS__)

#endif // UTILS_PERFORMANCE_LOGGER_HH

